﻿#include <iostream>
using namespace std;

//class A
//{
//public:
//	A(int a = 0)
//		:_a(a)
//	{
//		cout << "A(int a = 0)" << endl;
//	}
//	~A()
//	{
//		cout << "~A()" << endl;
//	}
//
//private:
//	int _a;
//};
//class B
//{
//public:
//	B(int b = 0)
//		:_b(b)
//	{
//		cout << "B(int b = 0)" << endl;
//	}
//	~B()
//	{
//		cout << "~B()" << endl;
//	}
//
//private:
//	int _b;
//};
//class C
//{
//public:
//	C(int c = 0)
//		:_c(c)
//	{
//		cout << "C(int a = 0)" << endl;
//	}
//	~C()
//	{
//		cout << "~C()" << endl;
//	}
//
//private:
//	int _c;
//};
//class D
//{
//public:
//	D(int d = 0)
//		:_d(d)
//	{
//		cout << "D(int d = 0)" << endl;
//	}
//	~D()
//	{
//		cout << "~D()" << endl;
//	}
//
//private:
//	int _d;
//};
//
//static D d;
//
//A a;
//void fuc()
//{
//	B b;
//	
//	C c;
//}
#include <iostream>
#include <vector>
using namespace std;

class Date
{
public:
    Date(int year = 1, int month = 1, int day = 1)
        :_year(year), _month(month), _day(day)
    {}
    int operator-(const Date& d) const;
    bool operator!=(const Date& d) const;
    Date& operator+=(int day);
    int GetMonthDay() const
    {
        vector<int> MonthDay({ 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 });

        if (_month == 2 && ((_year % 4 == 0 && _year % 100 != 0) || _year % 400 == 0))
        {
            return 29;
        }
        return MonthDay[_month];
    }
private:
    int _year;
    int _month;
    int _day;
};
int Date::operator-(const Date& d) const
{
    Date tmp(d);
    int count = 1;
    while (tmp != *this)
    {
        count++;
        tmp += 1;
    }
    return count;
}

Date& Date::operator+=(int day)
{
    _day += day;
    while (_day > GetMonthDay())
    {
        _day -= GetMonthDay();
        if (_month == 13)
        {
            _year++;
            _month = 1;
        }
    }
    return *this;
}

bool Date::operator!=(const Date& d) const
{

    return (_year != d._year || _month != d._month || _day != d._day);
}


//int main()
//{
//    int year = 0, month = 0, day = 0;
//    cin >> year >> month >> day;
//    Date d1(year, month, day);
//    Date d2(year);
//
//    cout << (d1 - d2) << endl;
//
//}

class A
{
public:
    A(int a)
        :_a1(a), _a2(_a1)
    {}

    void Print()
    {
        cout << _a1 << " " << _a2 << endl;
    }

private:
    int _a2;
    int _a1;
};

int main()
{

    A aa(1);
    aa.Print();
    return 0;
}